//
//
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.web.context.request.RequestContextHolder;
//import org.springframework.web.context.request.ServletRequestAttributes;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.util.Enumeration;
//import java.util.HashMap;
//import java.util.Map;
//
//
///**
// * 功能说明: request请求处理工具类<br>
// * 系统版本: v1.0<br>
// * 开发人员: @author kongdy<br>
// * 开发时间: 2015年7月21日<br>
// */
//public class RequestUtil {
//
//	/**
//	 * 静态取request，本地junit非容器运行时无法使用，服务未启动完成无法使用
//	 * @return
//	 */
//	public static HttpServletRequest getRequest() {
//		try {
//			ServletRequestAttributes attr = (ServletRequestAttributes)RequestContextHolder.currentRequestAttributes();
//			if (attr != null) {
//				return attr.getRequest();
//			}
//		} catch (Exception e) {
//
//		}
//		return null;
//	}
//
//	/**
//	 * 得到该次请求的{@link HttpServletResponse}
//	 *
//	 * @return
//	 */
//	public static HttpServletResponse getResponse() {
//		HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
//		return response;
//	}
//
//	/**
//	 * 取完整根路径，防止重复contextpath
//	 * @param request
//	 * @param page
//	 * @return
//	 */
//	public static String getRootURL(HttpServletRequest request, String page) {
//		StringBuffer url = request.getRequestURL();
//		String rootUrl = url.substring(0, url.indexOf(request.getRequestURI()));
//		if (StringUtils.isEmpty(page)) {
//			return rootUrl;
//		}
//		if (!rootUrl.endsWith("/") && !page.startsWith("/")) {
//			rootUrl = rootUrl + "/";
//		}
//		return rootUrl + page;
//	}
//
//	/**
//	 * 取重定向完整根路径，防止重复contextpath
//	 * @param request
//	 * @param page
//	 * @return
//	 */
//	public static String getRootRedirectURL(HttpServletRequest request, String page) {
//		StringBuffer url = request.getRequestURL();
//		String redirect = url.substring(0, url.indexOf(request.getRequestURI()));
//
//		String host = request.getHeader("Real-Host");
//		if (StringUtils.isNotBlank(host)) {
//			redirect = redirect.replace(request.getHeader("Host"), host);
//		}
//		if (redirect.startsWith("http:")) {
//			String referer = request.getHeader("referer");
//			if (StringUtils.isNotBlank(referer) && referer.startsWith("https")) {
//				redirect = redirect.replace("http:", "https:");
//			}
//		}
//		if (StringUtils.isEmpty(page)) {
//			return "redirect:" + redirect;
//		}
//		if (!redirect.endsWith("/") && !page.startsWith("/")) {
//			redirect = redirect + "/";
//		}
//		return "redirect:" + redirect + page;
//	}
//
//	/**
//	 * 取IP地址
//	 * @param request
//	 * @return
//	 */
//	public static String getIpAddress(HttpServletRequest request) {
//		String ipAddress = request.getHeader("x-forwarded-for");
//		if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
//			ipAddress = request.getHeader("Proxy-Client-IP");
//		}
//		if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
//			ipAddress = request.getHeader("WL-Proxy-Client-IP");
//		}
//		if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
//			ipAddress = request.getRemoteAddr();
//		}
//		//对于通过多个代理的情况，第一个IP为客户端真实IP,多个IP按照','分割
//		if(ipAddress!=null && ipAddress.length()>15){ //"***.***.***.***".length() = 15
//			if(ipAddress.indexOf(",")>0){
//				ipAddress = ipAddress.substring(0,ipAddress.indexOf(","));
//			}
//		}
//		return ipAddress;
//	}
//
//	/**
//	 * @category 获取request参数
//	 * @param request
//	 * @return
//	 */
//	public static Map<String, String> request2Map(HttpServletRequest request) {
//		Map<String, String> map = new HashMap<String, String>();
//		Enumeration<String> enums = request.getParameterNames();
//		while (enums.hasMoreElements()) {
//			String name = enums.nextElement();
//			String value = request.getParameter(name);
//			if (request.getParameterValues(name) != null) {
//				value = StringUtils.join(request.getParameterValues(name), ",");
//			}
//			map.put(name, value);
//		}
//		return map;
//	}
//
//	/**
//	 * 根据url得到域名不加协议返回
//	 * @param name
//	 * @return
//	 */
//	public static String getDomainName(String hostname) {
//		StringBuilder sb = new StringBuilder();
//		if(StringUtils.isBlank(hostname)){
//			return null;
//		}
//		int start = (hostname.indexOf("//") ==-1)?0:(hostname.indexOf("//")+2);
//		for(int index = start;index <hostname.length(); index++){
//			char c = hostname.charAt(index);
//			if(c == '/'){
//				break;
//			}
//			else{
//				sb.append(c);
//			}
//		}
//		return sb.toString();
//	}
//
//	/**
//	 *
//	 * @param s xss
//	 * @return
//	 */
//	public static String encodeXSS(String s) {
//		if (s == null || "".equals(s)) {
//			return s;
//		}
//		StringBuilder sb = new StringBuilder();
//		for (int i = 0; i < s.length(); i++) {
//			char c = s.charAt(i);
//			switch (c) {
//
//				// handle the '<' and '>' which can be used for constructing <script> and </script>
//				case '>':
//					sb.append('＞');
//					break;
//				case '<':
//					sb.append('＜');
//					break;
//
//				// since the html can support the characters using $#number format
//				// so here also need to escape '#','&' and quote symbol
//				case '\'':
//					sb.append('‘');
//					break;
//				case '\"':
//					sb.append('“');
//					break;
//				case '&':
//					sb.append('＆');
//					break;
//				case '\\':
//					sb.append('＼');
//					break;
//				case '#':
//					sb.append('＃');
//					break;
//
//				// if not the special characters ,then output it directly
//				default:
//					sb.append(c);
//					break;
//			}
//		}
//		return sb.toString();
//	}
//
//
//}
